歡迎來到第五天,在分享更多爬蟲內容之前,必須先來聊聊爬蟲禮儀。
爬蟲禮儀是一種約定成俗的共識,他沒有制式/強制的規定。為了讓爬蟲程式不會為伺服器帶來過重的壓力而引發癱瘓的相互尊重。
寫爬蟲的目的不外乎是透過程式可以自動的獲取我們日常生活、工作所需的資訊,一隻爬蟲程式可能可以為我們省下不少的時間。
但在爬蟲程式會在短時間內多次訪問同一個伺服器,就如同昨天所測試的爬蟲程式,會在 30 秒內訪問 IT 邦幫忙的伺服器 31 次(時間依照你的網路速度會略有不同),如果是人為瀏覽這 30 篇文章,最快也要花個 10~20 分鐘才有可能瀏覽完全部的文章,這代表著這隻爬蟲程式用超過 40 倍以上的速度在訪問伺服器,這代表著同一個時間有 40 個人同時在訪問 IT 邦幫忙,感覺沒什麼?試想一件事,如果用上了非同步爬蟲,那就會是上百、上千倍的量,而這樣的情況非常有可能造成癱瘓(請想像以前在搶五月天演唱會網站掛掉的情形),一但網站癱瘓了所有人都無法拿到自己想要的資訊,而該站的工程師有可能會在半夜 3 點半被老闆 Call 回公司,這是一個大家都不樂見的情況。
一但爬蟲爬到目標站癱瘓,很有可能你的行為已被認定為 DDoS 攻擊,而根據刑法第 360 條可能已經觸法。
現在多數的網站都有設立防爬蟲機制,但身為一隻有禮貌的蟲,請在爬蟲前該網站的 robots.txt,他會明確的規範什麼樣的 User-Agent
被允許訪問,也會規範哪些分頁不允許訪問,另外是訪問間隔 Crawl-delay
,他規範了每個訪問必須間隔多久,以蝦皮的 robots.txt 為例,他希望每次的訪問彼此間隔 1 秒。
今天就先這樣,希望大家都能夠成為一隻有禮貌的蟲,我們明天見。